{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "决策树原理：  \n",
    "https://windmising.gitbook.io/liu-yu-bo-play-with-machine-learning/12-1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import trees\n",
    "import utils\n",
    "import treePlotter"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 一个简单的人造数据 --- 香农熵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]\n",
      "['no surfacing', 'flippers']\n"
     ]
    }
   ],
   "source": [
    "myDat,labels = utils.createDataSet()\n",
    "print (myDat)\n",
    "print (labels)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Expect Result:  \n",
    "\n",
    "[[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]  \n",
    "['no surfacing', 'flippers']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9709505944546686"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trees.calcShannonEnt(myDat)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Expect Result:  \n",
    "0.9709505944546686"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1, 1, 'maybe'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]\n",
      "1.3709505944546687\n"
     ]
    }
   ],
   "source": [
    "myDat[0][-1]='maybe'\n",
    "print (myDat)\n",
    "print (trees.calcShannonEnt(myDat))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Expect Result:  \n",
    "\n",
    "[[1, 1, 'maybe'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]  \n",
    "1.3709505944546687"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.3709505944546687"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trees.calcShannonEnt(myDat)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 一个简单的人造数据 --- 划分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[[1, 'yes'], [1, 'yes'], [0, 'no']]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "myDat,labels = utils.createDataSet()\n",
    "trees.splitDataSet(myDat,0,1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Expect Result:  \n",
    "[[1, 'yes'], [1, 'yes'], [0, 'no']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[[1, 'no'], [1, 'no']]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trees.splitDataSet(myDat,0,0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Expect Result:  \n",
    "[[1, 'no'], [1, 'no']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trees.chooseBestFeatureToSplit(myDat)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Expect Result: 0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 一个简单的人造数据 --- 决策树"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'no surfacing': {0: 'no', 1: {'flippers': {0: 'no', 1: 'yes'}}}}"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "myDat,labels = utils.createDataSet()\n",
    "myTree = trees.createTree(myDat,labels)\n",
    "myTree"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Expect Result:  \n",
    "{'no surfacing': {0: 'no', 1: {'flippers': {0: 'no', 1: 'yes'}}}}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "treePlotter.createPlot(myTree)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'no surfacing': {0: 'no', 1: {'flippers': {0: 'no', 1: 'yes'}}, 3: 'maybe'}}"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "myTree['no surfacing'][3]='maybe'\n",
    "myTree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "treePlotter.createPlot(myTree)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 一个简单的人造数据 --- 分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "myDat,labels=utils.createDataSet()\n",
    "myTree = trees.createTree(myDat,labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'no'"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trees.classify(myTree,labels,[1,0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'yes'"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trees.classify(myTree,labels,[1,1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 一个简单的人造数据 --- 序列化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'no surfacing': {0: 'no', 1: {'flippers': {0: 'no', 1: 'yes'}}}}"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trees.storeTree(myTree,'classifierStorage.txt')\n",
    "trees.grabTree('classifierStorage.txt')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Lenses Test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'tearRate': {'reduced': 'no lenses',\n",
       "  'normal': {'astigmatic': {'yes': {'prescript': {'hyper': {'age': {'presbyopic': 'no lenses',\n",
       "        'young': 'hard',\n",
       "        'pre': 'no lenses'}},\n",
       "      'myope': 'hard'}},\n",
       "    'no': {'age': {'presbyopic': {'prescript': {'hyper': 'soft',\n",
       "        'myope': 'no lenses'}},\n",
       "      'young': 'soft',\n",
       "      'pre': 'soft'}}}}}}"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fr=open('lenses.txt')\n",
    "lenses=[inst.strip().split('\\t') for inst in fr.readlines()]\n",
    "lensesLabels=['age', 'prescript', 'astigmatic', 'tearRate']\n",
    "lensesTree = trees.createTree(lenses,lensesLabels)\n",
    "lensesTree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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n58f06dPV3f474Wuri4///wzS5YsoXfv3syYMYOCggLVey9paWmp1syTSi+ZiCW1Onz4MA0bNqR9+/YYGRlx6dIlOnbsSMeOHVmzZg3Pnz8H4O7du6SkpHDv3j0MDAwYMGAAEyZM4OzZs2q+gvfr888/58yZMxw+fJj27dsXWnj0JWNjYypWrEhERATw4ibny9axVDq8snioJBWH/Px8pk6dyrp161i3bh2ffPIJz549w8TEBC0tLTp06EBCQgJNmzYFoHz58mzYsIFr164xceJENDU10dbWZtmyZWq+kvfPysqKgwcPMmfOHLp06fLa4W3r169nxIgRZGVlUbNmTdauXauGSKV3JccRS8UuOTmZfv36YWRkxPr167G0tESpVOLi4sLWrVupU6eOukMssU6ePEm/fv3o3r078+bNk0sylRGya0IqVtu2baNx48b07NmT3377DUtLSy5dukTt2rVp166dTMJ/oXnz5sTFxXHnzh2aNGlCYmKiukOSioBsEUvFIisri2+++YZDhw6xadMm3Nzc1B1SqSaEICgoCH9/f+bPn8/AgQPR0NBQd1jSO5KJWHrvLly4gJeXF05OTixbtkztq2eUJRcuXMDT0xNnZ2dZt6WY7JqQ3hvxfwtptmnThgkTJrBhwwaZKIpYgwYNiI6Opnz58ri4uBAdHa3ukKR3IFvE0nuRnp7O0KFDuX79OmFhYdStW1fdIZV5W7du5euvv+bbb79l3LhxckmmUkT+T0lF7uTJkzRs2BArKytOnz4tk3Ax8fDwICoqih07dsglmUoZmYilIlNQUMDMmTPp1asXixcvZuHChSV+CaOypnr16hw7dky1JNPBgwfVHZL0N8iuCalI3Lt3jwEDBqBUKgkNDcXKykrdIX3wXi7J5OPjw/Tp0+WSTCWYbBFL/9ru3btxcXHB3d2dQ4cOySRcQrxckuncuXO0atWKpKQkdYckvYFMxNI7y8nJYezYsXz99dds3bq1TCxhVNb8eUmmjz/+mC1btqg7JOk1ZCKW/rbLly/j6+sLwJUrV2jatCk3b94kNjaWli1bqjk66U00NTUZN24cv/32G99//z1Dhw4lKysLgLNnz8rFS0sAmYilvy0gIIA6deoQHBxM8+bN8fX1LdNLGJU1jRo14uzZsygUCtWSTDExMXz11VfqDu2DJxOx9LfExcVx/Phx4uLi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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "treePlotter.createPlot(lensesTree)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
